/* * Copyright (c) 2014 by Gerrit Grunwald * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package eu.hansolo.fx.heatmap; import javafx.application.Application; import javafx.geometry.Dimension2D; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.ToggleButton; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.AnchorPane; import javafx.stage.FileChooser; import javafx.stage.Stage; import javafx.stage.Window; import java.io.File; /** * User: hansolo * Date: 30.06.14 * Time: 14:59 */ public class HeatMapViewer extends Application { private static final Dimension2D SIZE = new Dimension2D(1024, 640); private AnchorPane pane; private ImageView backgroundImage; private ImageView heatMapImage; private Button buttonLoadBackgroundImage; private Button buttonLoadHeatMapImage; private ToggleButton toggleButtonShowHeatMap; @Override public void init() { backgroundImage = new ImageView(); heatMapImage = new ImageView(); buttonLoadBackgroundImage = new Button("BackgroundImage"); buttonLoadHeatMapImage = new Button("HeatmapImage"); toggleButtonShowHeatMap = new ToggleButton("hide"); toggleButtonShowHeatMap.setSelected(true); AnchorPane.setLeftAnchor(buttonLoadBackgroundImage, 10d); AnchorPane.setTopAnchor(buttonLoadBackgroundImage, 10d); AnchorPane.setRightAnchor(buttonLoadHeatMapImage, 10d); AnchorPane.setTopAnchor(buttonLoadHeatMapImage, 10d); AnchorPane.setRightAnchor(toggleButtonShowHeatMap, 10d); AnchorPane.setTopAnchor(toggleButtonShowHeatMap, 40d); pane = new AnchorPane(backgroundImage, heatMapImage, buttonLoadBackgroundImage, buttonLoadHeatMapImage, toggleButtonShowHeatMap); registerListeners(); } private void registerListeners() { buttonLoadBackgroundImage.setOnAction(observable -> handleControlPropertyChanged("LOAD_BACKGROUND")); buttonLoadHeatMapImage.setOnAction(observable -> handleControlPropertyChanged("LOAD_HEATMAP")); toggleButtonShowHeatMap.setOnAction(observable -> handleControlPropertyChanged("TOGGLE_HEATMAP")); } private void handleControlPropertyChanged(final String PROPERTY) { if ("LOAD_BACKGROUND".equals(PROPERTY)) { Image image = getImage(buttonLoadBackgroundImage.getScene().getWindow()); if (null == image) return; backgroundImage.setImage(image); backgroundImage.toBack(); } else if ("LOAD_HEATMAP".equals(PROPERTY)) { Image image = getImage(buttonLoadHeatMapImage.getScene().getWindow()); if (null == image) return; heatMapImage.setImage(image); toggleButtonShowHeatMap.setSelected(true); } else if ("TOGGLE_HEATMAP".equals(PROPERTY)) { toggleButtonShowHeatMap.setText(toggleButtonShowHeatMap.isSelected() ? "show" : "hide"); heatMapImage.setVisible(!toggleButtonShowHeatMap.isSelected()); } } private Image getImage(final Window WINDOW) { FileChooser fileChooser = new FileChooser(); fileChooser.setTitle("Open Resource File"); fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("Image Files", "*.png", "*.jpg", "*.gif")); final File SELECTED_FILE = fileChooser.showOpenDialog(WINDOW); return null == SELECTED_FILE ? null : new Image("file:" + SELECTED_FILE.getAbsolutePath(), pane.getWidth(), 0, true, true); } @Override public void start(Stage stage) { Scene scene = new Scene(pane, SIZE.getWidth(), SIZE.getHeight()); stage.setTitle("HeatMap Viewer"); stage.setScene(scene); stage.show(); } @Override public void stop() { System.exit(0); } public static void main(String[] args) { launch(args); } }